﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using CasaBella.Entities;
using CasaBella.BL;
using Microsoft.Practices.Unity;

namespace CasaBella.UI
{
    public partial class FrmMarca : Form
    {
        [Dependency]
        public IMarcaBicicletaBL mBiciBL { get; set; }

        [Dependency]
        public IMarcaColchoneBL mColcBL { get; set; }

        [Dependency]
        public IMarcaImportadoBL mImportBL { get; set; }

        [Dependency]
        public IMarcaMuebleBL mMuebleBL { get; set; }

        [Dependency]
        public IMarcaOtrosBL mOtrosBL { get; set; }

        public FrmMarca()
        {
            InitializeComponent();
            this.BuilUp();
        }

        bool xtendBici;
        bool xtendColc;
        bool xtendImport;
        bool xtendMueb;
        bool xtendOtros;

        public void XtendBici()
        {
            xtendBici = true;
        }
        public void XtendColc()
        {
            xtendColc = true;
        }
        public void XtendImport()
        {
            xtendImport = true;
        }
        public void XtendMueb()
        {
            xtendMueb = true;
        }
        public void XtendOtros()
        {
            xtendOtros = true;
        }

        private void FrmMarca_Load(object sender, EventArgs e)
        {
            cargaData();
        }

        public void cargaData()
        {
            mARCA_BICICLETABindingSource.DataSource = mBiciBL.GetAllFromMarcaBicicleta();
            mARCA_COLCHONBindingSource.DataSource = mColcBL.GetAllFromMarcaColchon();
            mARCA_IMPORTADOBindingSource.DataSource = mImportBL.GetAllFromMarcaImportado();
            mARCA_MUEBLEBindingSource.DataSource = mMuebleBL.GetAllFromMarcaMueble();
            mARCA_OTROSBindingSource.DataSource = mOtrosBL.GetAllFromMarcaOtros();
        }

        private void btnBuscar_Click(object sender, EventArgs e)
        {
            if (tabControl1.SelectedTab == tabBicicleta)
            {
                mARCA_BICICLETABindingSource.DataSource = mBiciBL.GetAllFromMarcaBicicletaByCriterio(TxtCriterio.Text);
                if (mARCA_BICICLETABindingSource.Count == 0)
                {
                    MessageBox.Show("Marca no existente.", "Mensaje", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
            }
            else if (tabControl1.SelectedTab == tabColchon)
            {
                mARCA_COLCHONBindingSource.DataSource = mColcBL.GetAllFromMarcaColchonByCriterio(TxtCriterio.Text);
                if (mARCA_COLCHONBindingSource.Count == 0)
                {
                    MessageBox.Show("Marca no existente.", "Mensaje", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
            }
            else if (tabControl1.SelectedTab == tabImportado)
            {
                mARCA_IMPORTADOBindingSource.DataSource = mImportBL.GetAllFromMarcaImportadoByCriterio(TxtCriterio.Text);
                if (mARCA_IMPORTADOBindingSource.Count == 0)
                {
                    MessageBox.Show("Marca no existente.", "Mensaje", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
            }
            else if (tabControl1.SelectedTab == tabMueble)
            {
                mARCA_MUEBLEBindingSource.DataSource = mMuebleBL.GetAllFromMarcaMuebleByCriterio(TxtCriterio.Text);
                if (mARCA_MUEBLEBindingSource.Count == 0)
                {
                    MessageBox.Show("Marca no existente.", "Mensaje", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
            }
            else if (tabControl1.SelectedTab == tabOtros)
            {
                mARCA_OTROSBindingSource.DataSource = mOtrosBL.GetAllFromMarcaOtrosByCriterio(TxtCriterio.Text);
                if (mARCA_OTROSBindingSource.Count == 0)
                {
                    MessageBox.Show("Marca no existente.", "Mensaje", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
            }
        }

        private void TxtCriterio_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Enter)
            {
                if (tabControl1.SelectedTab == tabBicicleta)
                {
                    mARCA_BICICLETABindingSource.DataSource = mBiciBL.GetAllFromMarcaBicicletaByCriterio(TxtCriterio.Text);
                    if (mARCA_BICICLETABindingSource.Count == 0)
                    {
                        MessageBox.Show("Marca no existente.", "Mensaje", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    }
                }
                else if (tabControl1.SelectedTab == tabColchon)
                {
                    mARCA_COLCHONBindingSource.DataSource = mColcBL.GetAllFromMarcaColchonByCriterio(TxtCriterio.Text);
                    if (mARCA_COLCHONBindingSource.Count == 0)
                    {
                        MessageBox.Show("Marca no existente.", "Mensaje", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    }
                }
                else if (tabControl1.SelectedTab == tabImportado)
                {
                    mARCA_IMPORTADOBindingSource.DataSource = mImportBL.GetAllFromMarcaImportadoByCriterio(TxtCriterio.Text);
                    if (mARCA_IMPORTADOBindingSource.Count == 0)
                    {
                        MessageBox.Show("Marca no existente.", "Mensaje", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    }
                }
                else if (tabControl1.SelectedTab == tabMueble)
                {
                    mARCA_MUEBLEBindingSource.DataSource = mMuebleBL.GetAllFromMarcaMuebleByCriterio(TxtCriterio.Text);
                    if (mARCA_MUEBLEBindingSource.Count == 0)
                    {
                        MessageBox.Show("Marca no existente.", "Mensaje", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    }
                }
                else if (tabControl1.SelectedTab == tabOtros)
                {
                    mARCA_OTROSBindingSource.DataSource = mOtrosBL.GetAllFromMarcaOtrosByCriterio(TxtCriterio.Text);
                    if (mARCA_OTROSBindingSource.Count == 0)
                    {
                        MessageBox.Show("Marca no existente.", "Mensaje", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    }
                }
            }
        }

        private void btnNuevo_Click(object sender, EventArgs e)
        {
            FrmMttoMarca frm = new FrmMttoMarca();
            frm.NuevaMarca();
            frm.ShowDialog();
            cargaData();
        }

        private void btnEditar_Click(object sender, EventArgs e)
        {
            var mBici = mARCA_BICICLETABindingSource.Current as MARCA_BICICLETA;
            var mColc = mARCA_COLCHONBindingSource.Current as MARCA_COLCHON;
            var mImport = mARCA_IMPORTADOBindingSource.Current as MARCA_IMPORTADO;
            var mMueble = mARCA_MUEBLEBindingSource.Current as MARCA_MUEBLE;
            var mOtros = mARCA_OTROSBindingSource.Current as MARCA_OTROS;

            if (tabControl1.SelectedTab == tabBicicleta)
            {
                if (mBici != null)
                {
                    FrmMttoMarca frm = new FrmMttoMarca();
                    frm._marcaBici = mBici;
                    frm.EditarMarca();
                    frm.ShowDialog();
                    cargaData();
                }
                else
                {
                    MessageBox.Show("Debe seleccionar una Marca.", "Mensaje", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
            }
            else if (tabControl1.SelectedTab == tabColchon)
            {
                if (mColc != null)
                {
                    FrmMttoMarca frm = new FrmMttoMarca();
                    frm._marcaColc = mColc;
                    frm.EditarMarca();
                    frm.ShowDialog();
                    cargaData();
                }
                else
                {
                    MessageBox.Show("Debe seleccionar una Marca.", "Mensaje", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
            }
            else if (tabControl1.SelectedTab == tabImportado)
            {
                if (mImport != null)
                {
                    FrmMttoMarca frm = new FrmMttoMarca();
                    frm._marcaImport = mImport;
                    frm.EditarMarca();
                    frm.ShowDialog();
                    cargaData();
                }
                else
                {
                    MessageBox.Show("Debe seleccionar una Marca.", "Mensaje", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
            }
            else if (tabControl1.SelectedTab == tabMueble)
            {
                if (mMueble != null)
                {
                    FrmMttoMarca frm = new FrmMttoMarca();
                    frm._marcaMueble = mMueble;
                    frm.EditarMarca();
                    frm.ShowDialog();
                    cargaData();
                }
                else
                {
                    MessageBox.Show("Debe seleccionar una Marca.", "Mensaje", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
            }
            else if (tabControl1.SelectedTab == tabOtros)
            {
                if (mOtros != null)
                {
                    FrmMttoMarca frm = new FrmMttoMarca();
                    frm._marcaOtros = mOtros;
                    frm.EditarMarca();
                    frm.ShowDialog();
                    cargaData();
                }
                else
                {
                    MessageBox.Show("Debe seleccionar una Marca.", "Mensaje", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
            }          
        }

        private void btnEliminar_Click(object sender, EventArgs e)
        {
            var mBici = mARCA_BICICLETABindingSource.Current as MARCA_BICICLETA;
            var mColc = mARCA_COLCHONBindingSource.Current as MARCA_COLCHON;
            var mImport = mARCA_IMPORTADOBindingSource.Current as MARCA_IMPORTADO;
            var mMueble = mARCA_MUEBLEBindingSource.Current as MARCA_MUEBLE;
            var mOtros = mARCA_OTROSBindingSource.Current as MARCA_OTROS;

            if (tabControl1.SelectedTab == tabBicicleta)
            {
                if (mBici != null)
                {
                    var rpt = MessageBox.Show(this,
                    string.Format("¿Desea Eliminar la Marca: " + mBici.Descripcion + "?"),
                    "Mensaje",
                    MessageBoxButtons.YesNo,
                    MessageBoxIcon.Question);
                    if (rpt == DialogResult.Yes)
                    {
                        mBiciBL.DeleteMarcaBicicleta(mBici.Id);
                        cargaData();
                    }
                }
                else
                {
                    MessageBox.Show("Debe seleccionar una Marca.", "Mensaje", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
            }
            else if (tabControl1.SelectedTab == tabColchon)
            {
                if (mColc != null)
                {
                    var rpt = MessageBox.Show(this,
                    string.Format("¿Desea Eliminar la Marca: " + mColc.Descripcion + "?"),
                    "Mensaje",
                    MessageBoxButtons.YesNo,
                    MessageBoxIcon.Question);
                    if (rpt == DialogResult.Yes)
                    {
                        mColcBL.DeleteMarcaColchon(mColc.Id);
                        cargaData();
                    }
                }
                else
                {
                    MessageBox.Show("Debe seleccionar una Marca.", "Mensaje", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
            }
            else if (tabControl1.SelectedTab == tabImportado)
            {
                if (mImport != null)
                {
                    var rpt = MessageBox.Show(this,
                    string.Format("¿Desea Eliminar la Marca: " + mImport.Descripcion + "?"),
                    "Mensaje",
                    MessageBoxButtons.YesNo,
                    MessageBoxIcon.Question);
                    if (rpt == DialogResult.Yes)
                    {
                        mImportBL.DeleteMarcaImportado(mImport.Id);
                        cargaData();
                    }
                }
                else
                {
                    MessageBox.Show("Debe seleccionar una Marca.", "Mensaje", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
            }
            else if (tabControl1.SelectedTab == tabMueble)
            {
                if (mMueble != null)
                {
                    var rpt = MessageBox.Show(this,
                    string.Format("¿Desea Eliminar la Marca: " + mMueble.Descripcion + "?"),
                    "Mensaje",
                    MessageBoxButtons.YesNo,
                    MessageBoxIcon.Question);
                    if (rpt == DialogResult.Yes)
                    {
                        mMuebleBL.DeleteMarcaMueble(mMueble.Id);
                        cargaData();
                    }
                }
                else
                {
                    MessageBox.Show("Debe seleccionar una Marca.", "Mensaje", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
            }
            else if (tabControl1.SelectedTab == tabOtros)
            {
                if (mOtros != null)
                {
                    var rpt = MessageBox.Show(this,
                    string.Format("¿Desea Eliminar la Marca: " + mOtros.Descripcion + "?"),
                    "Mensaje",
                    MessageBoxButtons.YesNo,
                    MessageBoxIcon.Question);
                    if (rpt == DialogResult.Yes)
                    {
                        mOtrosBL.DeleteMarcaOtros(mOtros.Id);
                        cargaData();
                    }
                }
                else
                {
                    MessageBox.Show("Debe seleccionar una Marca.", "Mensaje", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
            }
        }

        private void TxtCriterio_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (Char.IsLetter(e.KeyChar) || Char.IsNumber(e.KeyChar) || Char.IsPunctuation(e.KeyChar))
            {
                e.Handled = false;
            }
            else if (Char.IsControl(e.KeyChar))
            {
                e.Handled = false;
            }
            else if (Char.IsSeparator(e.KeyChar))
            {
                e.Handled = false;
            }
            else
            {
                e.Handled = true;
            }
        }

        public MARCA_BICICLETA currentMarcaBici { get; set; }
        private void mARCA_BICICLETARadGridView_DoubleClick(object sender, EventArgs e)
        {
            if (xtendBici == true)
            {
                currentMarcaBici = mARCA_BICICLETABindingSource.Current as MARCA_BICICLETA;
                this.Close();
            }
        }

        public MARCA_COLCHON currentMarcaColc { get; set; }
        private void mARCA_COLCHONRadGridView_DoubleClick(object sender, EventArgs e)
        {
            if (xtendColc == true)
            {
                currentMarcaColc = mARCA_COLCHONBindingSource.Current as MARCA_COLCHON;
                this.Close();
            }
        }

        public MARCA_IMPORTADO currentMarcaImport { get; set; }
        private void mARCA_IMPORTADORadGridView_DoubleClick(object sender, EventArgs e)
        {
            if (xtendImport == true)
            {
                currentMarcaImport = mARCA_IMPORTADOBindingSource.Current as MARCA_IMPORTADO;
                this.Close();
            }
        }

        public MARCA_MUEBLE currentMarcaMueb { get; set; }
        private void mARCA_MUEBLERadGridView_DoubleClick(object sender, EventArgs e)
        {
            if (xtendMueb == true)
            {
                currentMarcaMueb = mARCA_MUEBLEBindingSource.Current as MARCA_MUEBLE;
                this.Close();
            }
        }

        public MARCA_OTROS currentMarcaOtros { get; set; }
        private void mARCA_OTROSRadGridView_DoubleClick(object sender, EventArgs e)
        {
            if (xtendOtros == true)
            {
                currentMarcaOtros = mARCA_OTROSBindingSource.Current as MARCA_OTROS;
                this.Close();
            }
        }
    }
}
